#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//char** summaryRanges(int* nums, int numsSize, int* returnSize) {
//    char** ret = (char**)malloc(sizeof(char*) * numsSize + 1);
//    int i = 0;
//    *returnSize = 0;
//    while (i < numsSize)
//    {
//        int low = i;
//        i++;
//        while (i < numsSize && nums[i] == nums[i - 1] + 1)
//        {
//            i++;
//        }
//        int high = i - 1;
//        char* tmp = malloc(sizeof(char) * 25);
//        sprintf(tmp, "%d", nums[low]);
//        if (low < high)
//        {
//            sprintf(tmp + strlen(tmp), "->");
//            sprintf(tmp + strlen(tmp), "%d", nums[high]);
//        }
//        ret[(*returnSize)++] = tmp;
//    }
//    return ret;
//}
//
//
//int missingNumber(int* nums, int numsSize) {
//    int ret = 0;
//    for (int i = 0; i < numsSize; i++)
//    {
//        ret ^= i;
//        ret ^= nums[i];
//    }
//    ret ^= numsSize;
//    if (ret == 0)
//        return 0;
//    return ret;
//}

//void Swap(int* p1, int* p2)
//{
//    int tmp = *p1;
//    *p1 = *p2;
//    *p2 = tmp;
//}
//void moveZeroes(int* nums, int numsSize) {
//
//    for (int i = 0; i < numsSize; i++)
//    {
//        if (i >= numsSize)
//            break;
//        if (nums[i] == 0)
//        {
//            while (numsSize > i && nums[numsSize] == 0)
//                numsSize--;
//            if (i < numsSize)
//                Swap(&nums[i], &nums[numsSize-1]);
//        }
//    }
//}

void Swap(int* p1, int* p2)
{
    int tmp = *p1;
    *p1 = *p2;
    *p2 = tmp;
}
void moveZeroes(int* nums, int numsSize) {

    for (int i = 0; i < numsSize; i++)
    {
        for (int j = 0; j < numsSize - i - 1; j++)
        {
            if (nums[j + 1] == 0)
            {
                continue;
            }
            if (nums[j] == 0)
            {
                Swap(&nums[j], &nums[j + 1]);
                continue;
            }
        }
    }
}
int main()
{
    int arr[] = { 0,1,0,3,12 };
    moveZeroes(arr, sizeof(arr) / sizeof(int));
    for (int i = 0; i < sizeof(arr) / sizeof(int); i++)
    {
        printf("%d ", arr[i]);
    }
    return 0;
}